Digital electronic circuitry often operates on information represented by many parallel data bits. It is often necessary in mathematical operations within digital electronic circuitry to shift these data bits left or right selected numbers of bit positions. Circuitry for shifting data bits left and right is essential to arithmetic logic units in microprocessors and coprocessors.
Some bidirectional shifters presently used in digital electronic circuitry require that the data to be shifted be input into one input for left shift operations and into another input for right shift operations. Because of the need for routing the data to be shifted into different inputs, depending on whether a left or right shift operation is required, shifting of data in these present shifters takes more than one clock cycle and may require additional circuitry for routing the data to the appropriate input.
On right shift operations, data which is shifted to the right of the least significant bit of the data bits is lost. Present bit shifters which allow for shifting of bits a variable number of positions do not indicate whether significant data bits have been shifted to the right of the least significant bit on right shift operations.
Therefore, a need has arisen for a bit shifter which allows for unidirectional data flow and bidirectional, that is, left and right, shifting of variable bit positions, which also indicates whether significant data bits have been shifted to the right of the least significant bit on right shift operations. Furthermore, because of the importance of speed in digital electronic processing, a need has arisen for a bit shifter which outputs shifted data in a single clock cycle.